package com.lonely.api.mes.model.dto;

import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author : 黄志标
 * @date: 2025/11/13 17:24
 * @description: 国内大货下单接口请求实体
 */
@Data
public class DomesticBulkGoodsPlaceOrderDTO implements Serializable {

    /**
     * 交货日期
     */
    private String dueDate;

    /**
     * 订单明细
     */
    private List<Line> lineList;

    /**
     * 量体师
     */
    private String measurer;

    /**
     * 生产计划号
     */
    private String orderPno;

    /**
     * 订单来源系统
     */
    private String ppFrom;

    /**
     * 订单唯一主键(来源系统)
     */
    private String thirdUid;

    /**
     * 客户编号
     */
    private String customerId;

    /**
     * 客户名称
     */
    private String customerName;

    /**
     * 业务员
     */
    private String mrchds;

    /**
     * 下单日期
     */
    private String orderDate;

    /**
     * 销售订单号
     */
    private String orderNo;

    /**
     * 订单备注
     */
    private String remark;

    /**
     * 指定车间
     */
    private String wkspcd;

    /**
     * 订单明细
     */
    @Data
    public static class Line implements Serializable {

        /**
         * 尺码清单
         */
        private List<Item> itemList;

        /**
         * 主料(面料)颜色
         */
        private String mainMcolor;

        /**
         * 主料(面料)编号
         */
        private String mainMid;

        /**
         * 品类编号
         */
        private String prodId;

        /**
         * 款式编号
         */
        private String stylId;

        /**
         * 物料清单
         */
        private List<Bom> bomList;

        /**
         * 主料(面料)名称
         */
        private String mainMname;

        /**
         * 主料(面料)规格
         */
        private String mainSpec;

        /**
         * 版型
         */
        private String pattern_no;

        /**
         * 体型
         */
        private String pattern_sty;

        /**
         * 品类名称
         */
        private String prodName;

        /**
         * 产品颜色名称
         */
        private String prtrnm;

        /**
         * 备注
         */
        private String remark;

        /**
         * 产品名称
         */
        private String skuName;

        /**
         * 产品编码
         */
        private String skuNo;

        /**
         * 产品规格
         */
        private String skuSpec;

        /**
         * 产品类别
         */
        private String skuType;

        /**
         * 款式名称
         */
        private String stylName;

        /**
         * 工艺清单
         */
        private List<Tec> tecList;

        /**
         * 单位
         */
        private String unitnm;

        /**
         * 指定车间
         */
        private String worker;
    }

    /**
     * 尺码清单
     */
    @Data
    public static class Item implements Serializable {

        /**
         * 数量
         */
        private Long itemQty;

        /**
         * 尺码
         */
        private String sizeNo;

        /**
         * 备注
         */
        private String remark;

        /**
         * 套牌编号
         */
        private Long suitno;
    }


    /**
     * 物料清单
     */
    @Data
    public static class Bom implements Serializable {

        /**
         * 主料(非常备)/辅料(常备)
         */
        private Boolean mainMterial;

        /**
         * 物料编号
         */
        private String materialId;

        /**
         * 排版部件
         */
        private String cadpartcd;

        /**
         * 裁剪宽度
         */
        private Long cutWidth;

        /**
         * 裁剪用量
         */
        private Long cutWstrat;

        /**
         * 规格型号
         */
        private String maspec;

        /**
         * 物料批次
         */
        private String materialBatchno;

        /**
         * 物料颜色名称
         */
        private String materialClrnm;

        /**
         * 物料颜色编号
         */
        private String materialColor;

        /**
         * 物料成份
         */
        private String materialCom;

        /**
         * 物料名称
         */
        private String materialName;

        /**
         * 物料分类编号
         */
        private String materialTypeId;

        /**
         * 物料分类名称
         */
        private String materialTypeName;

        /**
         * 物料用途
         */
        private String materialUsage;

        /**
         * 物料尺码
         */
        private String mtrlsz;

        /**
         * 品号
         */
        private Long refrnc;

        /**
         * 备注
         */
        private String remark;

        /**
         * 供应商物料代号
         */
        private Long s_materialId;

        /**
         * 每三方系统唯一主键
         */
        private String thirdUid;

        /**
         * 总用量
         */
        private Double tolConsu;

        /**
         * 物料单耗
         */
        private Double uniConsu;

        /**
         * 单位编号
         */
        private String unitcd;

        /**
         * 单位名称
         */
        private String unitnm;

        /**
         * 物料宽度
         */
        private Double width;

    }


    /**
     * 工艺清单
     */
    @Data
    public static class Tec implements Serializable {

        /**
         * 工艺描述
         */
        private String craftdetail;

        /**
         * 工艺图1名称
         */
        private String img1Name;

        /**
         * 工艺图1下载地址
         */
        private String img1Url;

        /**
         * 工艺图2名称
         */
        private String img2Name;

        /**
         * 工艺图2下载地址
         */
        private String img2Url;

        /**
         * 工艺图3名称
         */
        private String img3Name;

        /**
         * 工艺图3下载地址
         */
        private String img3Url;

        /**
         * 工艺文件1名称
         */
        private String pdf1Name;

        /**
         * 工艺文件1下载地址
         */
        private String pdf1Url;

        /**
         * 工艺文件2名称
         */
        private String pdf2Name;

        /**
         * 工艺文件2下载地址
         */
        private String pdf2Url;

        /**
         * 工艺文件3名称
         */
        private String pdf3Name;

        /**
         * 工艺文件3下载地址
         */
        private String pdf3Url;

        /**
         * 部件编号
         */
        private String pdptcd;

        /**
         * 部件名称
         */
        private String pdptnm;

        /**
         * 工段编号
         */
        private String wctycd;

        /**
         * 工段名称
         */
        private String wctynm;

    }
}
